#ifndef INDIVIDUO_CPP
#define INDIVIDUO_CPP

#include <iostream>

using namespace std;

class Individuo{
	private:
	int tipo;
	int cor;
	double tempoChegadaFila1;
	double tempoChegadaFila2;
	double w1;
	double w2;
	double tempoChegadaServidor1;
	double tempoChegadaServidor2;
	double x1;
	double x2;
	double t1;
	double t2;
	double xr;
	double t;
	double w;
	double x;


public:
	
	Individuo(){
		cor = -1;
		tempoChegadaFila1 = -1;
		tipo = -1;
		tempoChegadaFila2 = -1;
		w1 = -1;
		w2 = -1;
		tempoChegadaServidor1 = -1;
		tempoChegadaServidor2 = -1;
		x1 = -1;
		x2 = -1;
		t1 = -1;
		t2 = -1;
		xr = -1;
		t = -1;
		w = -1;
		x = -1;

	}
	Individuo(double tempoChegadaFila1, int tipo, int cor = -1):tipo(tipo), cor(cor), tempoChegadaFila1(tempoChegadaFila1),	w1(0) {

		tempoChegadaFila2 = 0;
		w2 = 0;
		tempoChegadaServidor1 = 0;
		tempoChegadaServidor2 = 0;
		x1 = 0;
		x2 = 0;
		t1 = 0;
		t2 = 0;
		xr = 0;
		t = 0;
		w = 0;
		x = 0;

	}

	int getTipo(){
		return tipo;
	}
	
	double getTempoChegadaFila1(){
		return tempoChegadaFila1;
	}
	
	double getW1()
	{
       return w1;
    }
    
	void setW1()
	{
       w1 = tempoChegadaServidor1-tempoChegadaFila1;
    }
    
	double getW2()
	{
       return w2;
    }
    
	void setW2()
	{
       w2 = tempoChegadaServidor2-tempoChegadaFila2;
    }

	double getX1(){
		 return x1;
	}

	double getX2(){
		 return x2;
	}
	
	void setT1()
	{
          t1 = w1 + x1;
    }
    
	double getT1()
    {
          return t1;
    }
    
    void setT2()
	{
          t2 = w2 + x2;
    }
    
    double getT2()
    {
          return t2;
    }
    
    double getXr(){
		return xr;
	}

    double getTempoChegadaServidor1(){
		return tempoChegadaServidor1;
	}
	
    double getTempoChegadaServidor2(){
		return tempoChegadaServidor2;
	}

	void setTipo(int i){
		tipo = i;
	}
	
	void setTempoChegadaFila2(double i){
		tempoChegadaFila2 = i;
	}
	
	void setTempoChegadaServidor2(double i){
		tempoChegadaServidor2 = i;
	}

	void setTempoChegadaServidor1(double i){
		tempoChegadaServidor1 = i;
	}

	void setXr(double i){
		xr = i;
	}

	void setX1(double i){
		x1 = i;
	}

	void setX2(double i){
		x2 = i;
	}

	void setW(){
		w = (tempoChegadaServidor1 - tempoChegadaFila1) + (getTempoChegadaServidor2()+ getXr()) - tempoChegadaFila2 - x2;
	}
	double getW(){
		return w;
	}
	void setX(){
		x = x1 + x2;
	}
	double getX(){
		return x;
	}
	void setT(){
		t = w + x;

	}
	double getT(){
		return t;
	}
	int getCor(){
		return cor;
	}
};
#endif
